La arquitectura orientada a servicios (SOA, siglas del inglés Service Oriented Architecture) es un estilo de arquitectura de TI que se apoya en la orientación a servicios. La orientación a servicios es una forma de pensar en servicios, su construcción y sus resultados. Un servicio es una representación lógica de una actividad de negocio que tiene un resultado de negocio específico (ejemplo: comprobar el crédito de un cliente, obtener datos de clima, consolidar reportes de perforación)
El estilo de arquitectura SOA se caracteriza por:
- Estar basado en el diseño de servicios que reflejan las actividades del negocio en el mundo real. Estas actividades forman parte de los procesos de negocio de la compañía.
- Representar los servicios utilizando descripciones de negocio para asignarles un contexto de negocio.
- Tener requerimientos de infraestructura específicos y únicos para este tipo de arquitectura. En general se recomienda el uso de estándares abiertos para la interoperabilidad y transparencia en la ubicación de servicios.
- Estar implementada de acuerdo con las condiciones específicas de la arquitectura de TI en cada compañía.
- Requerir un gobierno fuerte sobre las representación e implementación de servicios.
- Requerir un conjunto de pruebas que determinen que es un buen servicio.[1]
El desarrollo e implementación de una arquitectura SOA se rige por los principios descritos en el manifiesto SOA Archivado el 13 de agosto de 2017 en Wayback Machine.. Por otra parte la aplicación de la orientación a servicios se divide en 2 grandes etapas:
- Análisis orientado a servicios (Modelado de servicios)
- Diseño orientado a servicios, El diseño orientado a servicios cuenta con 8 principios de diseño que se aplican sobre cada uno de los servicios modelados, esto principios de diseño son:
- Contrato de servicio estandarizado: Los contratos de servicio cumplen con los mismos estándares de diseño.[2]
- Bajo acoplamiento: Los servicios evitan acoplarse a la tecnología que los implementa y a su vez reducen el acoplamiento impuesto a los consumidores.[3]
- Abstracción: Los contratos presentan la información mínima requerida y la información de los servicios se limita a los expuesto en el contrato.[4]
- Reusabilidad: Los servicios expresan y contienen lógica de negocio independiente del consumidor y su entorno, por lo tanto se convierten en activos de la empresa.[5]
- Autonomía: Los servicios deben tener un gran control de los recursos tecnológicos sobre los cuales están implementados.[6]
- Sin estado: Los servicios reducen el consumo de recursos al delegar el manejo de estados (sesiones) cuando se requiera.[7]
- Garantizar su descubrimiento: Lo servicios cuentan con metadata que permite descubrirlos e interpretar el servicio en términos de negocio.[8]
- Preparado para ser usado en composiciones: Los servicios pueden hacer parte de una composición sin importar el tamaño y complejidad de la misma.[9]